package main;

import java.util.ArrayList;
import processus.Pere;

public class Main {
    
    protected static ArrayList<Pere> listePeres = new ArrayList<Pere>();
    
    public static void main(String[] args) throws InterruptedException {
        
        int nbPeres = 4;
        
        // On lance les pères
        for(int i = 0; i < nbPeres; ++i) {
            Pere p = new Pere(nbPeres);
            listePeres.add(p);
            p.start();
        }
        
        // On attend que tous les pères soient démarrés
        while(true) {
            int nbPeresDemarres = 0;
            for(int i = 0; i < nbPeres; ++i) {
                if(listePeres.get(i).isAlive()) {
                    nbPeresDemarres++;
                }
            }

            // Si tout le monde est démarré
            if(nbPeresDemarres == nbPeres) {
                break;
            }
            
            try { Thread.sleep(100); } catch (InterruptedException ex) {}
        }
        
        // On lance l'execution de tous les pères
        for(int i = 0; i < nbPeres; ++i) {
            listePeres.get(i).launchExec();
        }
        
        // Laisse tourner pendant 10 secondes
        try { Thread.sleep(10000); } catch (InterruptedException ex) {}
        
        // On ordonne la fin de l'execution de tous les pères
        for(int i = 0; i < nbPeres; ++i) {
            listePeres.get(i).stopExec();
        }
        
        // On attend la fermeture des pères
        for(int i = 0; i < nbPeres; ++i) {
            listePeres.get(i).join();
        }
        
    }
}
